#include <stdio.h>
#include <stdlib.h>
#include "estructuras.h"

extern unsigned int* generar_tabla_apariciones(unsigned char *buf, unsigned int size);
extern codigo_t* generar_tabla_codigos(unsigned int *tabla_apariciones);
extern int calcular_longitud_codificacion(unsigned int *tabla_apariciones, codigo_t *tabla_codigo);

int main(){
	//Creamos la tabla de apariciones.
	unsigned int size = 100;
	unsigned char *buf = (unsigned char *)malloc(size);
	
	int i;
	for (i = 0; i<size/4; i++){
		buf[i] = 0;
	}
	
	for (i = size/4; i<size/2; i++){
		buf[i] = 1;
	}
	
	for (i = size/2; i<size; i++){
		buf[i] = 2;
	}
	
	unsigned int *tabla_apariciones;
	tabla_apariciones = generar_tabla_apariciones(buf, size);
	
	codigo_t *tabla_codigos = generar_tabla_codigos(tabla_apariciones);
	
	int long_codif = calcular_longitud_codificacion(tabla_apariciones, tabla_codigos);
	
	printf("La longitud de la codificacion es: %d \n", long_codif);
	
	printf("Esta es la tabla de codigos \n");
	
	for (i=0; i<10; i++){
		if(tabla_codigos[i].valido){
			printf("Esta es la posicion %i \n", i);
			mostrar_codigo_t(&tabla_codigos[i]);
		}
	}
	
	return 0;
}
